The concept of transaction is used in the maintenance of such information systems in which the pieces of information stored in the system must be compatible or non-contradictory with each other at every time instant. One conceivable example is a banking application, wherein a given bank account involves information such as a balance and account transactions. Assuming an exemplary situation, wherein the information regarding account transactions would have had recorded therein an entry representing a deposit or withdrawal transaction, but updating the account balance information has not been managed yet. If, at this point, the information system was to fall into an error condition, i.e. to crash, the restart procedure would possibly create a situation in which the sets of information regarding the bank account would have a mutual discrepancy therebetween: the balance information and the information regarding account transactions would not comply with each other. The occurrence of a mismatch as described above can be avoided in such a way that the operations relevant to information stored in the system be processed as suboperations included in a single data processing entity or transaction, all of which must be successfully executed in order for said transaction to be considered successfully completed. In the event that all suboperations have not become successfully executed, none of the suboperations is considered as executed. In the foregoing exemplary situation, this means that for example a new transaction entry is not valid until after a matching update has been made in balance information and both the transaction entry and the updated balance information have each been validated simultaneously.
In this document, the concept of transaction is used in reference to a data processing entity constituted by one or more suboperations, wherein all suboperations must be successfully executed for a transaction to be regarded as successfully completed. The transaction is usually divided into three successive operations: a start of transaction, an update of data, and a commitment of transaction. The update of data comprises changing existing data, deleting existing data, and adding new data. The commitment refers to processing the updated data into valid data. The data, for whose changing, deletion or addition a transaction is executed, is in this document referred to as payload data. Valid payload data prior to the commitment of a transaction consists of that payload data which is consistent with the condition prior to starting the transaction. In a recovery process subsequent to a serious system malfunction (for example a system crash), which has taken place during a transaction, said transaction shall be concluded provided that the start of a commitment process has been reached, i.e. all updates have been managed. If this is not the case, not a single update relevant to the transaction shall be validated.
Sets of hardware used for implementing information systems are often provided with two types of memory: a non-volatile memory and a volatile memory. The information present in a non-volatile memory is available for service in a recovery process subsequent to a serious system error. On the other hand, the information present in a volatile memory is usually lost in the occurrence of a serious system error. The situation discussed in this document is such that the non-volatile memory is implemented by way of a flash type memory device. A typical feature in semiconductor flash memory circuits is that data present in the memory cannot generally be updated in one physical storage location without first erasing away an entire memory block. After a block-level erasion, all bits of the erased memory block have a common value, which is usually ‘1’. Each bit of the memory block can be changed thereafter separately for another value, which is usually ‘0’. After this, the only way of changing the value a discussed bit is to erase the entire memory block away again.
In this document, the term “flash type memory device” is used in reference to a memory device designed with one or more semiconductor flash memory circuits or to a logical flash memory device or LFMD device adapted to function according to the typical features of semiconductor flash memory circuits. For example, a magnetic diskette drive or a static RAM device (Random Access Memory) can be adapted to function the same way as an LFMD device. In addition, the flash type memory device can be a medium which has a semiconductor flash memory circuit linked to a memory device configured with other technology, such as a magnetic diskette drive or a static RAM device.